#ifndef FREQUENCY_INFORMATION_MODEL_H
#define FREQUENCY_INFORMATION_MODEL_H

#include <QAbstractTableModel>

class Information;

/*****************************************************************************************
  @copyright 2013-2020
  @author    qiaowei
  @contact   weiweiqiao@126.com
  @version   1.0
  @date      2020-mm-03
  @brief     模型类，显示从文件读取的台站信息，或者显示互调计算后的台站信息
******************************************************************************************/

class Frequency_information_model : public QAbstractTableModel
{
public:
    explicit Frequency_information_model(QObject *parent = nullptr);

    /***************************************************************************
     @author   qiaowei
     @version  1.0
     @date     2020-12-30
     @brief    返回模型的行数，返回信息列表的元素个数
     @param    parent 索引
     @return   模型存储数据的行数
    ***************************************************************************/
    virtual int rowCount(const QModelIndex &parent = QModelIndex()) const;

    /***************************************************************************
     @author   qiaowei
     @version  1.0
     @date     2020-12-30
     @brief    返回模型的列数，即信息列表元素中项的个数
     @param    parent 索引
     @return   列数，项为扇区频率类（Information），返回4
    ***************************************************************************/
    virtual int columnCount(const QModelIndex &parent = QModelIndex()) const;

    /**********************************************************
     @author   qiaowei
     @version  1.0
     @date     2020-12-30
     @brief    模型返回项的值
     @param    index 项的索引
     @param    role 角色
     @return   根据项的角色返回相应的值
    ***********************************************************/
    virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;

    /**********************************************************
     @author   qiaowei
     @version  1.0
     @date     2020-12-30
     @brief    设置表头
     @param    section 表头行/列的项数
     @param    orientation 表头行/列标识
     @param    role 表头角色
    ***********************************************************/
    virtual QVariant headerData(int section,
                                Qt::Orientation orientation,
                                int role = Qt::DisplayRole) const;

    /**********************************************************
     @author   qiaowei
     @version  1.0
     @date     2020-12-30
     @brief    根据传入的台站信息列表，设置模型数据列表
     @param    list 台站信息列表
    ***********************************************************/
    void set_informations_list(QList<Information*>* list);

    void reset_model_data();

    QList<Information *> *get_informations_list();

private:
    /**********************************************************
     @author   qiaowei
     @version  1.0
     @date     2020-12-31
     @brief    保存台站所有频率信息的list
    ***********************************************************/
    QList<Information*>* informations_list_;
};

#endif // FREQUENCY_INFORMATION_MODEL_H
